package main

import "fmt"

func aa() {
	fmt.Println("func aa")
}

func b() {
	defer func() {
		err := recover()
		if err != nil {
			fmt.Println("func b error")
		}
	}()
	panic(" panic in b") //defer 延迟调用会压缩到栈区最后，先panic，然后再调用defer后面的函数
}

// recover()内置函数必须搭配 defer 使用。 defer 一定要在可能引发 panic 的语句之前定义

func c() {
	fmt.Println("func c")
}
func main() {
	aa()
	b()
	c()
}
